/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Logica;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import Persistencia.ADOComentario;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.LinkedList;

/**
 *
 * @author NachoB
 */
public class Accion {

    private int id;
    private String nombre;
    private Usuario usuario; //hasta que la seccion de usuarios sea creada
    private String descripcion;
    private int estado; //estadoActual!!!!
    private ArrayList<HistorialEstado> historial;
    private Date fechaCreacion;// = new java.sql.Date(0); con esto se instanciaria
    private Date fechaVencimiento;
    private String reunion; //solo sirve para indicarle que reunion tiene cargada
    private String proyecto; //solo sirve en un caso especial para mostrar en una tabla de que proyecto es la accion

    public String getProyecto() {
        return proyecto;
    }

    public void setProyecto(String proyecto) {
        this.proyecto = proyecto;
    }

    public String getReunion() {
        return reunion;
    }

    public void setReunion(String reunion) {
        this.reunion = reunion;
    }

    public ArrayList<HistorialEstado> getHistorial() {
        return historial;
    }

    public void setHistorial(ArrayList<HistorialEstado> historial) {
        this.historial = historial;
    }

    //método utilizado para agregar un historial al ArrayList
    public void insertarHistorial(HistorialEstado histor) {
        historial.add(histor);
    }

    public Accion(String pNombre, String pDescripcion) {
        nombre = pNombre;
        descripcion = pDescripcion;
        historial = new ArrayList<HistorialEstado>();
        /*
         * EL id es autoincrementable por lo tanto no lo tiene cuando se crea el
         * obj se usa el metodo setId para asignarle un id
         */
    }

    public int getEstado() {
        return estado;
    }

    public void setEstado(int estado) {
        this.estado = estado;
    }

    public Date getFechaCreacion() {
        return fechaCreacion;
    }
    /*
     * obtiene la fecha, pero en String y de formato yyyy-MM-dd
     */

    public String getFechaCreacionString() {

        java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd");
        String fecha = sdf.format(fechaCreacion);
        return fecha;
    }
    /*
     * setea la fecha, recibe string
     */

    public void setFechaCreacion(String fechaCreacion) {

        try {
            DateFormat df = new SimpleDateFormat("dd-MM-yyyy");
            this.fechaCreacion = df.parse(fechaCreacion);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public Date getFechaVencimiento() {
        return fechaVencimiento;
    }

    public String getFechaVencimientoString() {

        java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd");
        String fecha = sdf.format(fechaVencimiento);
        return fecha;
    }

    public void setFechaVencimiento(String fechaVencimiento) {
        try {
            if (fechaVencimiento.equals("-  -"))// si la fecha viene vacia, agrego pro defecto
            {
                Calendar c1 = Calendar.getInstance();
                c1.add(Calendar.DATE, 7);
                this.fechaVencimiento = c1.getTime();

            } else {
                DateFormat df = new SimpleDateFormat("dd-MM-yyyy");
                this.fechaVencimiento = df.parse(fechaVencimiento);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public Accion() {
        historial = new ArrayList<HistorialEstado>();
    }

    public void setId(int id) {
        this.id = id;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public int getId() {
        return id;
    }

    public String getNombre() {
        return nombre;
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public String getDescripcion() {
        return descripcion;
    }

    /*
     * este metodo invierte la fecha para pasar de yyyy-MM-dd " a dd-MM-yyyy o viceversa
     */
    public String invertirCadena(String cadena) {
        String[] retorno = cadena.split("-");
        String aux = retorno[0];
        retorno[0] = retorno[2];
        retorno[2] = aux;

        return retorno[0] + "-" + retorno[1] + "-" + retorno[2];
    }

    /*
     * toma la feche de la bd, que es en yyyy-mm-dd y la pasa a dd-mm-YYYY
     */
    public void setFechaCreacionInvertida(String fechac) {
        try {
            DateFormat df = new SimpleDateFormat("dd-MM-yyyy");
            this.fechaCreacion = df.parse(this.invertirCadena(fechac));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void setFechaVencimientoInvertida(String fechac) {
        try {
            DateFormat df = new SimpleDateFormat("dd-MM-yyyy");
            this.fechaVencimiento = df.parse(this.invertirCadena(fechac));

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /*
     * complemento necesario del metodo set invertida
     */

    public String getFechaVencimientoStringInvertida() {

        java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("dd-MM-yyyy");
        String fecha = sdf.format(fechaVencimiento);
        return fecha;
    }

    public String getFechaCreacionStringInvertida() {

        java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("dd-MM-yyy");
        String fecha = sdf.format(fechaCreacion);
        return fecha;
    }
}
